// pages/purchase/purchase.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    productPrice: "0.00", // 商品价格
    totalAmount: "0.00", // 总金额
    shippingFee: "包邮", // 运费
    couponStatus: '无可用', // 优惠券
    giftCardStatus: '无可用', // 礼品卡
    avatarName: 0,
    cart: [], // 选中的商品
    address: {}, // 存储选中的地址
    onPaythis: ''
  },

  onLoad(options) {
    // 获取传递过来的订单数据
    const orderData = JSON.parse(decodeURIComponent(options.orderData));
    console.log(orderData);

    // 将传递的商品信息和其他数据更新到页面
    this.setData({
      cart: orderData.cart,
      productPrice: orderData.totalPrice, // 总价格
      totalAmount: orderData.totalPrice, // 合计金额
      // 其他订单数据
      avatarName: orderData.avatarName,
      address: {}, // 初始为空，显示"请选择地址"
    });
  },
  selectAddress() {
    wx.navigateTo({
      url: '/pages/userhome-buy/userhome-buy', // 假设地址选择页面路径为 '/pages/address/address'
    });
  },
  onPay() {
    if (this.data.address && Object.keys(this.data.address).length > 0) {
      // 如果地址已选择，执行支付逻辑

      const {
        address,
        cart,
        totalAmount
      } = this.data; // 获取当前页面的地址、购物车和总金额
      const user = wx.getStorageSync('user'); // 从缓存中获取用户数据

      // 创建一个空数组，存储多个商品数据
      const orderItems = cart.map(item => ({
        title: item.cartItem.name, // 商品名字
        num: item.cartItem.count, // 商品数量
        price: item.cartItem.price, // 单价
        avatarName: item.cartItem.avatarName, // 商品图片
        description: item.cartItem.description, // 商品描述
        _id: item.cartItem._id, // 商品ID
      }));

      // 订单的全局信息
      const orderData = {
        publishedAt: new Date(), // 发布时间
        time: new Date(), // 当前时间
        phone: address.phone, // 用户联系电话
        au: address.name, // 用户收货名字
        state: '待发货', // 订单初始状态
        region: address.region, // 地址区域
        detailAddress: address.detailAddress, // 详细地址
        orderItems: orderItems, // 购物车中的商品数组
        totalAmount: totalAmount, // 总金额
        userid: user._id, // 用户ID
      };

      // 向后台发送请求
      wx.request({
        url: 'http://localhost:3000/api/addOrder', // 后端接口路径
        method: 'POST',
        data: orderData, // 将订单数据发送给后台   
        success: (res) => {
          if (res.data.code === 200) {
            wx.showToast({
              title: '支付成功',
              icon: 'success',
              duration: 2000,
            });
            this.deleteCartItems(cart, user._id);
            setTimeout(() => {
              wx.navigateTo({
                url: '/pages/orderU/orderU',
              });
            }, 1300); // 延迟2秒
          } else {
            wx.showToast({
              title: '支付完成',
              icon: 'none',
              duration: 2000,
            });
            this.deleteCartItems(cart, user._id);
            setTimeout(() => {
              wx.navigateTo({
                url: '/pages/orderU/orderU',
              });
            }, 1300); // 延迟2秒
          }
        },
        fail: (err) => {
          console.error('订单提交失败', err);
          wx.showToast({
            title: '支付失败，请重试',
            icon: 'none',
            duration: 2000,
          });
        }
      });
    } else {
      // 如果没有选择地址，提示用户
      wx.showToast({
        title: '请选择地址',
        icon: 'none',
        duration: 2000,
      });
    }
  },

  deleteCartItems(cart, userId) {
    cart.forEach(item => {
      // 确保 item._id 存在
      if (item._id) {
        const cartItemId = item._id; // 获取商品ID
        wx.request({
          url: 'http://localhost:3000/api/delGouwu', // 删除商品的接口
          method: 'POST',
          data: {
            id: cartItemId
          },
          success: (res) => {
            if (res.data.code === 200) {
              console.log(`商品 ${cartItemId} 已成功删除`);
            } else {
              console.error(`删除商品 ${cartItemId} 失败`);
            }
          },
          fail: (err) => {
            console.error('删除购物车商品失败', err);
          }
        });
      } else {
        console.warn('商品没有有效的ID，跳过删除');
      }
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    const selectedAddress = wx.getStorageSync('selectedAddress'); // 获取缓存中的选中地址
    if (selectedAddress) {
      this.setData({
        address: selectedAddress // 更新显示的地址
      });
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})